"""
Python的列表（list)是有序的。在列表中，值可以是任何数据类型，被称为元素（element)或项（item)。
Python可以通过元素在列表中所占的位置进行访问，即对列表中的所有元素按序编号（称为索引），从而实现对列表的操作。列表的索引
是从0开始的，依次类推。列表没有长度限制，因为元素类型可以不同，所以不需要预先定义列表长度。
    列表用方括号表示，用逗号分隔其中的元素，也可以通过list()函数将元组或字符串转换成列表。直接使用list()函数会返回一个空
列表。

"""

"""
1.创建列表
创建列表和创建变量一样，用方括号把一组数据包围起来，元素与元素之间用逗号分隔即可。
如下都是合法的列表对象。
"""
list_01 = [5, 6, 4, 8, 7, 56]
list_02 = ['a', 'd', 'e', 'r', 'f']
list_03 = ['s', 23, 3.2, [5,8]]
list_04 = [{8,5}, {2:5}, ['file', 123, 4]]

print(list_01)
print(list_02)
print(list_03)
print(list_04)

"""
2.向列表添加元素
使用append()方法可向列表添加元素。例如：
"""
list_05 = [1,2,3]
print(list_05)
list_05.append(5)
print(list_05)

"""
    若要在指定位置添加元素，需要使用insert()函数。insert()函数有2个参数：第一个参数表示插入的位置，第二个参数表
示插入的元素。例如，把8插入列表的第2个位置：
"""
list_05.insert(1, 8)
print(list_05)

"""
3.从列表中访问元素
    列表是有序集合，因此要访问列表的任何元素，只需要将该元素的位置或者索引告诉Python即可。要访问列表元素，需指出
列表的名称，再指出元素的索引，并把索引放在方括号内。例如：
"""
fruit = ['草莓', '苹果', '香蕉', '芒果']
print(fruit[1])

for i in fruit:
    print(i, end=' ')
print("\n")
"""
4.从列表删除元素
    删除列表中的元素可以使用remove()方法、pop()方法、del语句。例如：
"""
val_01 = fruit.remove('苹果')
print(val_01)
print(fruit)

fruit_02 = ['草莓', '香蕉', '芒果']

print(fruit_02.pop())
print(fruit_02)
fruit_03 = ['草莓', '香蕉', '芒果']
print(fruit_03.pop(1))
print(fruit_03)

print("----")
"""
若del后跟列表的名字， 则删除整个列表的内容。使用del语句可以删除任何位置上的列表元素，条件是必须知道元素的索引。
例如：
"""
fruit_04 = ['草莓', '香蕉', '芒果']

# del fruit_04
print(fruit_04)

del fruit_04[1]
print(fruit_04)

"""
5.列表的其他常用操作方法
（1）count()方法
count()方法返回某个元素在列表中出现的次数。例如：
"""
num_5 = [1,2,3,5,4,1,2,3,6,1,2,2,1,2,4,5,4]
print(num_5.count(5))
print(num_5.count(1))
print(num_5.count(6))

"""
(2) extend()方法
extend（）方法在列表末尾一次性追加另一个列表的所有元素，用于扩展列表。例如：
"""
a = [1,2,3,4]
b = [5,6,7,8]
a.extend(b)
print(a)

"""
(3)index()方法
index（）方法返回列表中第一次出现的x元素的索引，若不存在该元素则报错。例如：
"""
print("(3)index()方法")
lis = [1,2,1,2,5,4,8,2]
print(lis.index(2))
print(lis.index(5))
# print(lis.index(50))

"""
(4)reverse()方法
reverse()方法反转列表元素的排列顺序，此方法不需要传入任何参数且‘永久性’地修改了列表元素的排列顺序。例如：
"""
list_reverse = [1,2,3,4,5]
print(list_reverse)
list_reverse.reverse()
print(list_reverse)

"""
(5)sort()方法
sort()方法“永久性”地修改了列表元素的排列顺序，默认为升序。例如：
"""
list_sort = [7,2,1,4,6,3]
list_sort.sort()
print(list_sort)
# sorted()函数对列表元素进行临时排列，并且返回排序后的列表副本，即列表本身的排序没有发生改变。
list_sort = [7,2,1,4,6,3]
print(sorted(list_sort))
print(list_sort)

"""
(6) clear()方法
clear()方法用于清空列表，与del语句的功能类似。例如：
"""
list_clear = ['python', 'study', 'is']
list_clear.clear()
print(list_clear)

"""
7.列表切片
列表的第一个元素的索引为0，第二个元素的索引为1，根据这种简单的计数方式，访问列表的任何元素，都可以把位置减1。
要创建切片，首先需要指定使用的第一个元素和最后一个元素的索引。
例如：要输出列表的前3个元素，需要指定索引0~3，即可输出索引分别为0,1,2的元素。
"""
"""
例：列表的切片方法。
"""
list_slice = [4,5,6,7,8,9,1,2,4,5,8]
print(list_slice[2:5])
# [6, 7, 8]

print(list_slice[:-1])
# [4, 5, 6, 7, 8, 9, 1, 2, 4, 5]

"""
列表的元素检查，代码如下：
"""
list_in = [1,2,3,4]
print(2 in list_in)
print(5 in list_in)

print(len(list_in))




